3 - Rechnerarchitektur [ID:10857]
50 von 827 angezeigt

Also, ich begrüße Sie zur Vorlesung der Rechneraktur die Woche.

Gut, wo ist, so weit glaube ich, von administrativen Übungen und Rechnerübungen ist so weit,

glaube ich, alles geklärt.

Okay, gut.

Dann, wo sind wir letzte Woche angekommen?

Also wir hatten uns jetzt mit diesen CISC und RISC Prozessoren auseinandergesetzt und wir

sind jetzt also bei den RISC Prozessoren angelangt.

Um es nochmal zu wiederholen, das Problem bei den RISC Prozessoren, bzw. fangen wir

erstmal mit den Vorteilen an, das angenehme an den RISC Prozessoren ist ja, dass wir Pipeline

extrem, Pipeline extrem ausnutzen können und im Idealfall könnten wir damit einen Speedup

gegenüber einer nicht, einem Rechenwerk oder einem Prozessor, der nicht mit Pipelining

arbeitet, einen Speedup um Faktor k, also k mal schneller werden, wenn wir k Phasen

hätten, also k einzelne Abschnitte in unserer Pipeline.

So, das werden wir aber maximal, das wäre dann das Maximale, was wir erreichen könnten,

das werden wir aber nicht schaffen, denn da sprechen eben die sogenannten Hesserts dagegen

und bei diesen Hesserts hat man Unterschiede zwischen den Struktur Hesserts, also Befehle,

die gleichzeitig auf gleiche Ressourcen benötigen, gleiche Ressourcen zugreifen möchten, also

beispielsweise Speicher oder auch ein Rechenwerk.

Ich kann also im einfachsten Fall drei Additionsbefehle nicht gleichzeitig ausführen auf einer superskalaren

Prozessoreinheit, wenn ich nur zwei Rechenwerke zur Verfügung habe.

Dann geht es nicht.

Ja, und dann haben wir uns beschäftigt, dann habe ich gesagt, es gibt Datenhesserts, das

soll heute in der Stunde Thema sein und wir waren bei diesen Sprunghesserts.

Sprunghesserts sind also die Probleme, die ergeben sich, wenn die Pipeline die einzelnen

Befehle abarbeitet und wir haben einen bedingten Sprungbefehl, das heißt also die Ausführung

des nächsten Befehls hängt von einer Bedingung ab.

Wir müssen also eine Adresse, unter Umständen müssen wir den Adresszähler, den Programmzähler

neu laden, weil der nächste auszuführende Befehl nicht der ist, der unmittelbar nach

diesem Sprungbefehl folgt.

Also wir müssen eben weiterspringen.

Problem ist, dass wir diese Auswertung der Bedingungen in der Exekutionsphase in unserer

Pipeline haben und die ist in der Regel immer weiter hinten.

Das heißt also es gibt eine Anzahl von Stufen in unserer Pipeline, wo wir Befehle reinladen

und wissen nicht genau, ob das wirklich die richtigen sind, weil wir nicht wissen, ob

wir springen müssen oder nicht.

Und das erfahren wir dann eben erst dann, wenn die Bedingung ausgewertet ist.

So, soweit so gut, da was kann man dagegen tun, dann haben wir uns mit der dynamischen

Sprungvorhersage mit statischer und dynamischer Sprungvorhersage auseinandergesetzt.

Statische Sprungvorhersage gab es Branch taken, Branch not taken oder Branch by opcode.

Bei der statischen Sprungvorhersage kommen wir so bis maximal 75%, wo wir richtig liegen.

Bei unserer Vorhersage mit der dynamischen werden wir besser, wir können also weit über

90% erreichen.

Und die dynamische Vorhersage nutzt vor allen Dingen aus dem Umstand, dass wir in Schleifen

immer wieder zurückspringen und ich hatte Ihnen also gezeigt, wie die Sache mit diesen

Historie-Bits läuft, also dass man für jeden Sprungbefehl die Vorgeschichte aufzeichnet

anhand von ein paar Bits, die jedem einzelnen Sprungbefehl zugeordnet sind.

Ach ja, genau, da fällt mir noch ein, genau, irgendjemand hat die Frage gestellt und da

gibt es also diese Branch-Historie-Tabellen, wie viele Einträge das es denn da geben kann

und das habe ich mittlerweile recherchiert, es sind tatsächlich so maximal 512, mit maximal

512 gibt es Untersuchungen, dass ich dann schon 96% richtig liege und wenn ich mehr Einträge

Teil einer Videoserie :

Zugänglich über

Offener Zugang

Dauer

01:28:25 Min

Aufnahmedatum

2013-10-31

Hochgeladen am

2019-04-30 05:39:03

Sprache

de-DE

Die Vorlesung baut auf die in den Grundlagen der Rechnerarchitektur und -organisation vermittelten Inhalte auf und setzt diese mit weiterführenden Themen fort. Es werden zunächst grundlegende fortgeschrittene Techniken bei Pipelineverarbeitung und Cachezugriffen in modernen Prozessoren und Parallelrechnern behandelt. Ferner wird die Architektur von Spezialprozessoren, z.B. DSPs und Embedded Prozessoren behandelt. Es wird aufgezeigt, wie diese Techniken in konkreten Architekturen (Intel Nehalem, GPGPU, Cell BE, TMS320 DSP, Embedded Prozessor ZPU) verwendet werden. Zur Vorlesung werden eine Tafel- und eine Rechnerübung angeboten, durch deren erfolgreiche Beteiligung abgestuft mit der Vorlesung 5 bzw. 7,5 ECTS erworben werden können. In den Tafelübungen werden die in der Vorlesung vermittelten Techniken durch zu lösende Aufgaben vertieft. In der Rechnerübung soll u.a. ein einfacher Vielkern-Prozessor auf Basis des ZPU-Prozessors mit Simulationswerkzeugen aufgebaut werden. Im Einzelnen werden folgende Themen behandelt:
  • Organisationsaspekte von CISC und RISC-Prozessoren

  • Behandlung von Hazards in Pipelines

  • Fortgeschrittene Techniken der dynamischen Sprungvorhersage

  • Fortgeschritten Cachetechniken, Cache-Kohärenz

  • Ausnutzen von Cacheeffekten

  • Architekturen von Digitalen Signalprozessoren

  • Architekturen homogener und heterogener Multikern-Prozessoren (Intel Corei7, Nvidia GPUs, Cell BE)

  • Architektur von Parallelrechnern (Clusterrechner, Superrechner)

  • Effiziente Hardware-nahe Programmierung von Mulitkern-Prozessoren (OpenMP, SSE, CUDA, OpenCL)

  • Leistungsmodellierung und -analyse von Multikern-Prozessoren (Roofline-Modell)

Empfohlene Literatur
  • Patterson/Hennessy: Computer Organization und Design
  • Hennessy/Patterson: Computer Architecture - A Quantitative Approach

  • Stallings: Computer Organization and Architecture

  • Märtin: Rechnerarchitekturen

Einbetten
Wordpress FAU Plugin
iFrame
Teilen